1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package com.google.common.primitives;
16
17 import com.google.common.annotations.GwtCompatible;
18
19
20
21
22 @GwtCompatible
23 final class ParseRequest {
24 final String rawValue;
25 final int radix;
26
27 private ParseRequest(String rawValue, int radix) {
28 this.rawValue = rawValue;
29 this.radix = radix;
30 }
31
32 static ParseRequest fromString(String stringValue) {
33 if (stringValue.length() == 0) {
34 throw new NumberFormatException("empty string");
35 }
36
37
38 String rawValue;
39 int radix;
40 char firstChar = stringValue.charAt(0);
41 if (stringValue.startsWith("0x") || stringValue.startsWith("0X")) {
42 rawValue = stringValue.substring(2);
43 radix = 16;
44 } else if (firstChar == '#') {
45 rawValue = stringValue.substring(1);
46 radix = 16;
47 } else if (firstChar == '0' && stringValue.length() > 1) {
48 rawValue = stringValue.substring(1);
49 radix = 8;
50 } else {
51 rawValue = stringValue;
52 radix = 10;
53 }
54
55 return new ParseRequest(rawValue, radix);
56 }
57 }